The present application is generally directed to a system for storing mass data, and more particularly to a system for caching mass data by a data buffer and generating file system data by a file system and command generator module.
Sometimes, mass data such as video data must be saved to mass storage such as to a solid-state disk (SSD) drive. In such case, saving the data will consume a lot of system data bandwidth and affect system performance.
FIG. 1 depicts a conventional mass storage system 100. In the traditional mass storage system 100, to store mass data to mass storage 101, the data first is saved in a DDR (double-data rate) memory 102, which acts as a data buffer. Next, the SATA (Serial AT Attachment) host controller 103 is configured and then the SATA host controller 103 moves the data from the DDR memory 102 to the mass storage 101. The mass storage 101 may be a SSD hard disk and the data may be stored using a direct memory access (DMA). These processes consume DDR memory bandwidth and sometimes an interrupt processor too. For example, in the case of video data, where video data is saved to mass storage, the mass data occupies much of the DDR memory's bandwidth. If another module such as a General Purpose Unit (GPU) wants to use the DDR memory 102 as a buffer at the same time that the DDR memory 102 is being used to save the video data to the mass storage 101, there may be a degradation of the system performance.
FIG. 2 depicts a mass storage system 200 with an embedded processor 202 for managing real-time data streams. A real-time interface block 203 is connected to a real-time data source (like a camera). The embedded processor 202 configures I/O control units 206 and a mass storage array 210 to be in a requested mode using control connections 204. For example, for real-time streaming, the embedded processor 202 first configures the I/O control units 206 and the mass storage array 210. A data switch 205 selects the real-time interface block 203 for data streaming. In addition, the I/O control units 206 receive information about the direction and the storage address of the data in the real-time data stream. In the case of a ‘record’ user input, the real-time data stream passes through the real-time interface block 203, the data switch 205, a real-time data buffer 207, and a data processing unit 208. The data processing unit 208 splits the real-time data stream and sends the real-time data to the I/O control units 206 and the I/O control units 206 write the data to a plurality of storage units 209 of the mass storage array 210. Thus, in this scenario, the processor 202 has to configure a SATA host controller and generate file system information, which may adversely impact the system performance.
Therefore, it would be advantageous to have a mass storage system that can store mass data with high system performance.